package com.lmc.util;

import android.util.Log;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

import java.lang.reflect.Type;
import java.util.List;

public class JsonManager {
    /**
     * json格式转对象
     */
    public static <T> T parseJson(String json, Class<T> clazz) {
        try {
            return new Gson().fromJson(json, clazz);
        } catch (Exception e) {
            Log.e("ParseJsonEntity", "json解析出错：" + e.getMessage() + "\n原因是：" + e.getCause());
            return null;
        }

    }

    public static <T> T parseJson(String json, Type typeOfT) {
        try {
            return new Gson().fromJson(json, typeOfT);
        } catch (Exception e) {
            Log.e("ParseJsonEntity", "json解析出错：" + e.getMessage() + "\n原因是：" + e.getCause());
            return null;
        }

    }

    public static <T> String toJson(Object clazz) {
        try {
            return new Gson().toJson(clazz);
        } catch (Exception e) {
            Log.e("ToJsonEntity", "json转换错误：" + e.getMessage() + "\n原因是：" + e.getCause());
            return null;
        }
    }

    /**
     * 功能描述：把指定的java对象转为json数据
     */
    public static <T> String toJson(Class<T> clazz) {
        try {
            return new Gson().toJson(clazz);
        } catch (Exception e) {
            Log.e("ToJsonEntity", "json转换错误：" + e.getMessage() + "\n原因是：" + e.getCause());
            return null;
        }
    }


    /**
     * 功能描述：把JSON数据转换成普通字符串列表
     */
    public static List<String> parseArray(String jsonData) {
        try {
            return new Gson().fromJson(jsonData, new TypeToken<List<String>>() {
            }.getType());
        } catch (Exception e) {
            Log.e("ParseJsonEntity", "json解析出错：" + e.getMessage() + "\n原因是：" + e.getCause());
            return null;

        }
    }

}
